/**
 * 本地测试 - 项目数据结构优化
 */

// 获取当前时间戳
const now = Math.floor(Date.now() / 1000);

// 创建符合新数据结构的测试数据
function createTestProjectData() {
    // 按照《项目数据结构优化指引.md》创建测试数据
    return {
        // 1. 基础标识信息
        id: 'proj_' + now,
        projectCode: `PRJ-TEST-${now}`,
        projectTitle: '测试项目-' + now,
        name: '测试项目-' + now,
        code: 'CODE-' + now,
        model: 'XR2000',
        
        // 2. 分类与描述信息
        projectType: 1,
        projectTypeName: '硬件项目',
        category: '研发',
        applicationType: '电机控制',
        description: '这是一个测试项目',
        projectDesc: '这是一个遵循新数据结构的测试项目',
        
        // 3. 人员信息
        // 客户信息
        customerName: '测试客户',
        
        // 申请人信息
        applicantId: 'test_user',
        applicantName: '测试用户',
        
        // 项目人员信息
        projectManagerId: 'test_manager',
        projectManagerName: '测试经理',
        teamMembers: ['member1', 'member2'],
        
        // 4. 项目管理和状态信息
        // 状态层级信息
        level1: 1,
        level2: 'director',
        level3: '',
        level4: '',
        statusDesc: '项目审核 > 董事长',
        
        // 项目管理
        priority: 'normal',
        progress: 0,
        
        // 5. 时间信息
        // 系统时间
        createTime: now,
        updateTime: now,
        
        // 项目时间点
        startDate: now,
        endDate: now + 90 * 24 * 60 * 60,
        deadline: now + 30 * 24 * 60 * 60,
        
        // 计划时间点
        planStartDate: now,
        planEndDate: now + 30 * 24 * 60 * 60,
        
        // 状态时间点
        stateTime: now,
        stateExpireTime: 0,
        
        // 6. 基础信息
        hasSample: '否',
        sampleImages: [],
        
        // 7. 特有参数信息 - 电机控制类项目特有字段
        // 基本参数
        workTemp: '-20~50℃',
        certification: 'CE,ROHS',
        lowPower: '是',
        startupTime: '1秒',
        conformalCoating: '是',
        
        // 电机基本参数
        ratedVoltage: '220V',
        maxPower: '1000W',
        maxSpeed: '5000rpm',
        polePairs: '4',
        hasHall: '有',
        hasBrake: '无'
    };
}

// 比较新旧数据结构
function compareDataStructures() {
    // 旧数据结构示例
    const oldData = {
        _id: 'proj_123456',
        PROJECT_TITLE: '旧结构项目',
        PROJECT_CODE: 'OLD-001',
        PROJECT_NAME: '旧结构项目',
        PROJECT_DESC: '这是一个使用旧数据结构的项目',
        PROJECT_CATE: 1,
        PROJECT_PRIORITY: 2,
        PROJECT_CUSTOMER_NAME: '旧客户',
        PROJECT_MANAGER_ID: 'old_mgr',
        PROJECT_MANAGER_NAME: '旧经理',
        PROJECT_STATUS: 1,
        PROJECT_SUB_STATUS: 'director',
        PROJECT_STATUS_DESC: '项目审核 > 董事长',
        PROJECT_PROGRESS: 0,
        ADD_TIME: now,
        EDIT_TIME: now,
        PROJECT_START_DATE: now,
        PROJECT_END_DATE: now + 7776000,
        PROJECT_PLAN_START_DATE: now,
        PROJECT_PLAN_END_DATE: now + 7776000
    };
    
    // 新数据结构示例
    const newData = createTestProjectData();
    
    // 打印对比
    console.log('=== 数据结构对比 ===');
    console.log('旧结构字段数:', Object.keys(oldData).length);
    console.log('新结构字段数:', Object.keys(newData).length);
    
    // 字段映射关系
    const fieldMappings = {
        '_id': 'id',
        'PROJECT_TITLE': 'projectTitle',
        'PROJECT_CODE': 'projectCode',
        'PROJECT_NAME': 'name',
        'PROJECT_DESC': 'description',
        'PROJECT_CATE': 'projectType',
        'PROJECT_PRIORITY': 'priority',
        'PROJECT_CUSTOMER_NAME': 'customerName',
        'PROJECT_MANAGER_ID': 'projectManagerId',
        'PROJECT_MANAGER_NAME': 'projectManagerName',
        'PROJECT_STATUS': 'level1',
        'PROJECT_SUB_STATUS': 'level2',
        'PROJECT_STATUS_DESC': 'statusDesc',
        'PROJECT_PROGRESS': 'progress',
        'ADD_TIME': 'createTime',
        'EDIT_TIME': 'updateTime',
        'PROJECT_START_DATE': 'startDate',
        'PROJECT_END_DATE': 'endDate',
        'PROJECT_PLAN_START_DATE': 'planStartDate',
        'PROJECT_PLAN_END_DATE': 'planEndDate'
    };
    
    console.log('\n字段映射关系:');
    for (const [oldField, newField] of Object.entries(fieldMappings)) {
        console.log(`${oldField} => ${newField}`);
    }
    
    // 检查新数据结构是否包含所有字段组
    const fieldGroups = {
        '基础标识信息': ['id', 'projectCode', 'projectTitle', 'name', 'code', 'model'],
        '分类与描述信息': ['projectType', 'projectTypeName', 'category', 'applicationType', 'description', 'projectDesc'],
        '人员信息': ['customerName', 'applicantId', 'applicantName', 'projectManagerId', 'projectManagerName', 'teamMembers'],
        '项目管理和状态信息': ['level1', 'level2', 'level3', 'level4', 'statusDesc', 'priority', 'progress'],
        '时间信息': ['createTime', 'updateTime', 'startDate', 'endDate', 'deadline', 'planStartDate', 'planEndDate', 'stateTime', 'stateExpireTime'],
        '基础信息': ['hasSample', 'sampleImages'],
        '特有参数信息': ['workTemp', 'certification', 'lowPower', 'startupTime', 'conformalCoating', 'ratedVoltage', 'maxPower', 'maxSpeed', 'polePairs', 'hasHall', 'hasBrake']
    };
    
    console.log('\n字段分组完整性检查:');
    for (const [groupName, fields] of Object.entries(fieldGroups)) {
        const missingFields = fields.filter(field => !newData.hasOwnProperty(field));
        console.log(`${groupName}: ${missingFields.length > 0 ? '缺少字段: ' + missingFields.join(', ') : '完整'}`);
    }
    
    return {
        oldData,
        newData,
        fieldMappings,
        fieldGroups
    };
}

// 执行测试
function runTest() {
    console.log('=== 开始项目数据结构优化测试 ===');
    
    // 创建测试数据
    const testData = createTestProjectData();
    console.log('新数据结构示例:');
    console.log(JSON.stringify(testData, null, 2));
    
    // 比较新旧数据结构
    compareDataStructures();
    
    console.log('\n=== 测试完成 ===');
    return {
        success: true,
        data: testData
    };
}

// 如果直接运行此脚本，执行测试
if (require.main === module) {
    console.log('直接执行本地测试脚本');
    const result = runTest();
    console.log('测试结果: 成功');
}

module.exports = {
    runTest,
    createTestProjectData,
    compareDataStructures
}; 